package com.songlanyun.modules.payrefund.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.math.BigDecimal;
import java.io.Serializable;
import java.util.Date;

import com.songlanyun.common.drive.RootEntity;
import com.songlanyun.common.enums.OrderConstant;
import com.songlanyun.common.enums.RightsOrderConstant;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * 退款系统订单
 *
 * @author lubo
 * @email sunlightcs@gmail.com
 * @date 2020-11-24 18:09:07
 */
@Data
@TableName("yxt_sale_pay_refund_order")
public class PayRefundOrder extends RootEntity<Long, PayRefundOrder> implements Serializable {
    private static final long serialVersionUID = 1L;

    {
        refundPoint = BigDecimal.ZERO;
    }

    /**
     *
     */
    @TableId
    private Long id;
    /**
     * 所属商家id
     */
    @NotNull(message = "所属商家id不能为空")
    private Long shopId;
    /**
     * 所属商家名称
     */
    @NotBlank(message = "所属商家名称不能为空")
    private String shopName;
    /**
     * 订单类型（0充值订单，1消费订单,2服务订单）
     */
    private OrderConstant.OrderType orderType;
    /**
     * 业务退款单号
     */
    private String refundCode;
    /**
     * 第三方退款支付编号
     */
    private String thirdRefundCode;
    /**
     * 支付方式（0余额，1微信，2支付宝）
     */
    private OrderConstant.PayMode payMode;
    /**
     * 退款总金额
     */
    private BigDecimal refundMoney;

    /**
     * 退回金额
     */
    private BigDecimal refundPoint;
    /**
     * 会员id
     */
    private Long userId;
    /**
     * 会员手机号
     */

    private String mobile;
    /**
     * 维权退款状态（0待退款，1退款成功，2退款失败）
     */
    private RightsOrderConstant.RightsRefundStatus rightsRefundStatus;

    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

    @Override
    public Long getIdentity() {
        return getId();
    }
}
